:art: Update eqpt_bind

huangqimin001 3 years ago
parent
commit
52f7fd7a0f
5 changed files with 77 additions and 3 deletions
  1. 38 2
      api/eqpt_views.py
  2. 1 1
      equipment/admin.py
  3. 23 0
      equipment/migrations/0002_auto_20210710_2358.py
  4. 14 0
      equipment/models.py
  5. 1 0
      requirements.txt

+ 38 - 2
api/eqpt_views.py

@@ -2,6 +2,9 @@
2 2
 
3 3
 from __future__ import division
4 4
 
5
+import json
6
+
7
+import requests
5 8
 from django.db.models import Q
6 9
 from django_logit import logit
7 10
 from django_query import get_query_value
@@ -23,15 +26,48 @@ def eqpt_bind(request):
23 26
 
24 27
     macidsns = macidsns or [{'macid': macid, 'sn': sn}]
25 28
 
29
+    headers = {
30
+        'Content-Type': 'application/json',
31
+        'Partner-Identifier': 'yingduo',
32
+        'Partner-Token': '9A79C0E34C72B4D0F9B5EA0C59FFC52A',
33
+    }
34
+
26 35
     for macidsn in macidsns:
27 36
         macid, sn = macidsn.get('macid'), macidsn.get('sn')
37
+
38
+        data = {
39
+            'mac': macid,
40
+            'callback': 'http://twjc.kodo.com.cn/api/upload/temperature',
41
+        }
42
+        # 设备注册成功
43
+        # {
44
+        #     "ret": "SUCCESS",
45
+        #     "data": {
46
+        #         "id": 6,
47
+        #         "callback": "http://twjc.kodo.com.cn/api/upload/temperature",
48
+        #         "mac": "C4:64:E3:7A:EF:A8"
49
+        #     },
50
+        #     "debug": ""
51
+        # }
52
+        #
53
+        # 设备注册失败
54
+        # {
55
+        #     "ret": "FAIL",
56
+        #     "data": "该设备已被注册!",
57
+        #     "debug": ""
58
+        # }
59
+        try:
60
+            result = requests.post('http://www.protontek.com/vcare-api/open/device/register', headers=headers, data=json.dumps(data)).json()
61
+        except Exception as e:
62
+            result = {'message': e.args}
63
+
28 64
         ThermometerEquipmentInfo.objects.update_or_create(macid=macid, defaults={
29 65
             'point_id': point_id,
30 66
             'sn': sn,
67
+            'eqpt_register_status': int(result.get('ret') == 'SUCCESS' or result.get('data') == '该设备已被注册!'),
68
+            'eqpt_register_result': result,
31 69
         })
32 70
 
33
-    # TODO: Call CarePatch's API, batch or single
34
-
35 71
     return response()
36 72
 
37 73
 

+ 1 - 1
equipment/admin.py

@@ -12,7 +12,7 @@ class IsolationPointInfoAdmin(admin.ModelAdmin):
12 12
 
13 13
 
14 14
 class ThermometerEquipmentInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
15
-    list_display = ('eqpt_id', 'point_id', 'macid', 'sn', 'active_status', 'active_at', 'name', 'sex', 'age', 'phone', 'remark', 'last_submit_at', 'status', 'updated_at', 'created_at')
15
+    list_display = ('eqpt_id', 'point_id', 'macid', 'sn', 'active_status', 'active_at', 'name', 'sex', 'age', 'phone', 'remark', 'last_submit_at', 'eqpt_register_status', 'eqpt_register_result', 'status', 'updated_at', 'created_at')
16 16
     list_filter = ('point_id', 'status')
17 17
 
18 18
 

+ 23 - 0
equipment/migrations/0002_auto_20210710_2358.py

@@ -0,0 +1,23 @@
1
+# Generated by Django 3.2.4 on 2021-07-10 15:58
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('equipment', '0001_initial'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='thermometerequipmentinfo',
15
+            name='eqpt_register_result',
16
+            field=models.TextField(blank=True, help_text='设备注册结果', null=True, verbose_name='eqpt_register_result'),
17
+        ),
18
+        migrations.AddField(
19
+            model_name='thermometerequipmentinfo',
20
+            name='eqpt_register_status',
21
+            field=models.IntegerField(choices=[(1, '注册成功'), (0, '注册失败')], default=0, help_text='设备注册状态', verbose_name='eqpt_register_status'),
22
+        ),
23
+    ]

+ 14 - 0
equipment/models.py

@@ -51,6 +51,14 @@ class ThermometerEquipmentInfo(BaseModelMixin):
51 51
         (OFFLINE, '已离线'),
52 52
     )
53 53
 
54
+    SUCCESS = 1
55
+    FAIL = 0
56
+
57
+    REGISTER_STATUE_TUPLE = (
58
+        (SUCCESS, '注册成功'),
59
+        (FAIL, '注册失败'),
60
+    )
61
+
54 62
     eqpt_id = ShortUUIDField(_('eqpt_id'), max_length=32, blank=True, null=True, help_text='设备唯一标识', db_index=True, unique=True)
55 63
 
56 64
     point_id = models.CharField(_('point_id'), max_length=32, blank=True, null=True, help_text='隔离点唯一标识', db_index=True)
@@ -71,6 +79,9 @@ class ThermometerEquipmentInfo(BaseModelMixin):
71 79
 
72 80
     last_submit_at = models.DateTimeField(_('last_submit_at'), blank=True, null=True, help_text=_('上一次上报时间'))
73 81
 
82
+    eqpt_register_status = models.IntegerField(_('eqpt_register_status'), choices=REGISTER_STATUE_TUPLE, default=FAIL, help_text='设备注册状态')
83
+    eqpt_register_result = models.TextField(_('eqpt_register_result'), blank=True, null=True, help_text='设备注册结果')
84
+
74 85
     class Meta:
75 86
         verbose_name = _('测温设备信息')
76 87
         verbose_name_plural = _('测温设备信息')
@@ -95,6 +106,9 @@ class ThermometerEquipmentInfo(BaseModelMixin):
95 106
             'phone': self.phone or '',
96 107
             'remark': self.remark or '',
97 108
             'last_submit_at': tc.local_string(utc_dt=self.last_submit_at),
109
+            'eqpt_register_status': self.eqpt_register_status,
110
+            'eqpt_register_status_str': dict(self.REGISTER_STATUE_TUPLE).get(self.eqpt_register_status, ''),
111
+            'eqpt_register_result': self.eqpt_register_result,
98 112
             'created_at': tc.local_string(utc_dt=self.created_at),
99 113
         }
100 114
 

+ 1 - 0
requirements.txt

@@ -3,6 +3,7 @@ furl==2.1.2
3 3
 jsonfield==3.1.0
4 4
 mysqlclient==2.0.3
5 5
 pysnippets==1.1.4
6
+requests==2.25.1
6 7
 rlog==0.3
7 8
 -r requirements_dj.txt
8 9
 -r requirements_pywe.txt